Apache Ant-এ <parallel> টাস্কটি আপনাকে একাধিক টাস্ক একসাথে সমান্তরালে (parallel) চালানোর সুবিধা দেয়। এই টাস্কটি একটি লক্ষ্য (target) বা টাস্কের সেট একে অপরের সাথে সমান্তরালে চালানোর জন্য ব্যবহৃত হয়, যা বিশেষ করে দীর্ঘ-running বা স্বাধীন টাস্কগুলির ক্ষেত্রে কার্যকরী। Parallel টাস্ক ব্যবহার করে আপনি সময় বাঁচাতে পারেন এবং আপনার বিল্ড প্রসেস দ্রুত করতে পারেন, কারণ এটি একাধিক টাস্ক একসাথে প্রক্রিয়া করে।
<parallel> টাস্ক <target> এবং <task>-এর মধ্যে সমান্তরাল কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়। এর মাধ্যমে আপনি একাধিক টাস্ককে একই সময়ে চালাতে পারেন, যা বিল্ড প্রক্রিয়ার পারফরম্যান্স উন্নত করতে সহায়ক।
Parallel Task এর Syntax
<parallel>
<target name="task1">
<!-- task 1 definition -->
</target>
<target name="task2">
<!-- task 2 definition -->
</target>
<!-- more tasks -->
</parallel>
- : এটি একটি টাস্ক যা তার মধ্যে থাকা একাধিক টাস্ক বা টার্গেটকে একসাথে সমান্তরালে চালায়।
- : আপনি যে টার্গেট বা টাস্ক সমান্তরালে চালাতে চান তা এখানে উল্লেখ করবেন।
১. Basic Example: Running Multiple Tasks in Parallel
এটি একটি সাধারণ উদাহরণ যেখানে দুটি টাস্ক সমান্তরালে চালানো হচ্ছে।
<project name="ParallelExample" default="runParallelTasks" basedir=".">
<target name="task1">
<echo message="Running Task 1" />
</target>
<target name="task2">
<echo message="Running Task 2" />
</target>
<target name="runParallelTasks">
<parallel>
<ant target="task1" />
<ant target="task2" />
</parallel>
</target>
</project>
এখানে:
- task1 এবং task2 দুটি টাস্ক রয়েছে যা runParallelTasks টার্গেটের মাধ্যমে সমান্তরালে চালানো হবে।
- টাস্কের মাধ্যমে এই দুটি টাস্ক একসাথে রান হবে।
আউটপুট:
Running Task 1
Running Task 2
উল্লেখযোগ্য যে এই দুটি টাস্ক সমান্তরালে চালানোর কারণে তারা একসাথে কনসোলে আউটপুট প্রিন্ট করেছে।
২. Parallel Execution with Dependencies
আপনি যদি কিছু টাস্কের মধ্যে নির্ভরশীলতা তৈরি করতে চান তবে <depends> অ্যাট্রিবিউট ব্যবহার করতে পারেন, যা নির্দিষ্ট টাস্কগুলির সমান্তরাল কার্যক্রম পরিচালনা করবে।
<project name="ParallelWithDependency" default="runParallelTasks" basedir=".">
<target name="task1">
<echo message="Running Task 1" />
</target>
<target name="task2" depends="task1">
<echo message="Running Task 2 after Task 1" />
</target>
<target name="task3">
<echo message="Running Task 3" />
</target>
<target name="runParallelTasks">
<parallel>
<ant target="task1" />
<ant target="task2" />
<ant target="task3" />
</parallel>
</target>
</project>
এখানে:
- task2 টাস্কটি task1 এর পরে রান হবে, কিন্তু task1 এবং task3 সমান্তরালে চলবে।
- টাস্কের মাধ্যমে এই তিনটি টাস্ক একসাথে চালানো হবে, তবে task2 কেবল task1 এর পর রান হবে।
আউটপুট:
Running Task 1
Running Task 3
Running Task 2 after Task 1
৩. Running Independent Tasks in Parallel
যদি টাস্কগুলি একে অপরের উপর নির্ভরশীল না থাকে, তবে আপনি তাদের সম্পূর্ণ স্বাধীনভাবে চালাতে পারেন। এতে বিল্ডের সময় বাঁচানো যায়।
<project name="IndependentParallelTasks" default="runParallel" basedir=".">
<target name="task1">
<echo message="Task 1: Cleaning up files" />
</target>
<target name="task2">
<echo message="Task 2: Compiling code" />
</target>
<target name="task3">
<echo message="Task 3: Packaging the JAR" />
</target>
<target name="runParallel">
<parallel>
<ant target="task1" />
<ant target="task2" />
<ant target="task3" />
</parallel>
</target>
</project>
এখানে:
- task1, task2, এবং task3 সমস্ত টাস্কগুলি একসাথে সমান্তরালে চালানো হবে।
- এই টাস্কগুলি একে অপরের উপর নির্ভরশীল না হওয়ায় তারা সমান্তরালে দ্রুত রান হবে।
আউটপুট:
Task 1: Cleaning up files
Task 2: Compiling code
Task 3: Packaging the JAR
৪. Setting Timeout for Parallel Execution
আপনি <parallel> টাস্কের জন্য timeout সেট করতে পারেন, যা সমান্তরাল টাস্কের একটি নির্দিষ্ট সময় পরে প্রক্রিয়া বন্ধ করবে যদি কোনো টাস্ক সম্পন্ন না হয়।
<project name="ParallelWithTimeout" default="runParallelWithTimeout" basedir=".">
<target name="task1">
<echo message="Running Task 1 with a long process" />
<sleep seconds="10" />
</target>
<target name="task2">
<echo message="Running Task 2 with a short process" />
<sleep seconds="3" />
</target>
<target name="runParallelWithTimeout">
<parallel timeout="5">
<ant target="task1" />
<ant target="task2" />
</parallel>
</target>
</project>
এখানে:
- timeout="5": এটি নির্দিষ্ট করে যে সমান্তরাল টাস্কগুলো 5 সেকেন্ডের মধ্যে শেষ না হলে কাজ বন্ধ হয়ে যাবে।
- task1 10 সেকেন্ডের জন্য ঘুমানোর কারণে এটি টােমআউট হয়ে যাবে, কিন্তু task2 সফলভাবে 3 সেকেন্ডে সম্পন্ন হবে।
আউটপুট:
Running Task 2 with a short process
Running Task 1 with a long process
এখানে task1 টাস্কটি টাইমআউট হয়ে যাবে, কিন্তু task2 সফলভাবে শেষ হবে।
৫. Running Parallel Tasks on Different Machines
Ant টাস্ক ব্যবহার করে আপনি একাধিক মেশিনে সমান্তরাল টাস্ক চালাতে পারেন, তবে এর জন্য আপনাকে Ant এর remote রানটাইম ফিচার ব্যবহার করতে হবে। এটি একটি উন্নত কনফিগারেশন যা সঠিকভাবে সেট আপ করা উচিত।
সারাংশ
<parallel> টাস্কটি Apache Ant-এ একটি অত্যন্ত কার্যকরী ফিচার যা একাধিক টাস্ককে একসাথে সমান্তরালে (parallel) চালানোর জন্য ব্যবহৃত হয়। এটি Ant স্ক্রিপ্টে কাজের কার্যক্রম দ্রুত করার জন্য সহায়ক, বিশেষত যখন আপনি স্বাধীন বা নির্ভরশীল টাস্কগুলিকে একসাথে সম্পন্ন করতে চান। Parallel Task ব্যবহার করে আপনি একাধিক কাজকে একসাথে প্রসেস করতে পারেন এবং এতে বিল্ড সময় অনেক কমিয়ে আনতে সহায়তা পেতে পারেন।
Read more